package com.ruoyi.mongo.util;

import com.mongodb.client.MongoCollection;
import com.mongodb.client.model.Filters;
import com.ruoyi.mongo.souce.MongoDB04AuthPoolUtil;

import java.util.Date;

import org.bson.Document;

/**
 * @Description: 更新文档
 * @ClassName: MongoTest02Update
 * @author syc
 * @date: 2022年5月25日 上午11:35:08
 */
public class MongoTest02Update {
    public static void main(String[] args) {
        MongoTest02Update docu =new MongoTest02Update();
        
        // docu.updateSingleDocumentSingleKey();  // 01
        // docu.updateSingleDocumentManyKey();     // 02 
        // docu.updatemManyDocumentSingleKey();     // 03 
        // docu.updatemManyDocumentManyKey();     // 04 
        docu.updateDocumentArray();     // 05
        docu.updateDocumentJSON();     // 06
    }

    /**
     * @Description: 01更新单个文档单个键
     * @author syc
     * @date: 2022年5月25日 上午11:10:43
     */
    public void updateSingleDocumentSingleKey(){
        MongoCollection<Document> collection = MongoDB04AuthPoolUtil.getCollection("test", "test_user");
        // 更新文档
        // Filters 封装了条件的一个工具类
        collection.updateOne(Filters.eq("name","卫何民0"),new Document("$set",new Document("age",28)));
    }

    /**
     * @Description: 02更新单个文档多个键
     * @author syc
     * @date: 2022年5月25日 上午11:11:51
     */
    public void updateSingleDocumentManyKey(){
        MongoCollection<Document> collection = MongoDB04AuthPoolUtil.getCollection("test", "test_user");
        // 更新文档
        // Filters 封装了条件的一个工具类
        collection.updateOne(Filters.eq("name","卫何民0"),new Document("$set",new Document("score",61).append("create_time",new Date())));
    }
  
    /**
     * @Description: 03更新单个文档多个键
     * @author syc
     * @date: 2022年5月25日 上午11:11:51
     */
    public void updatemManyDocumentSingleKey(){
        MongoCollection<Document> collection = MongoDB04AuthPoolUtil.getCollection("test", "test_user");
        // 更新文档
        // Filters 封装了条件的一个工具类
        collection.updateMany(Filters.ne("name",null),new Document("$set",new Document("age",88)));
    }
    
    /**
     * @Description: 04更新多个文档多个键
     * @author syc
     * @date: 2022年5月25日 上午11:11:51
     */
    public void updatemManyDocumentManyKey(){
        MongoCollection<Document> collection = MongoDB04AuthPoolUtil.getCollection("test", "test_user");
        // 更新文档
        // Filters 封装了条件的一个工具类
        collection.updateMany(Filters.ne("name",null),new Document("$set",new Document("score",72).append("age",21)));
    }
    
    /**
     * @Description: 05更新文档中的数组
     * @author syc
     * @date: 2022年5月25日 上午11:11:51
     */
     public void updateDocumentArray(){
         MongoCollection<Document> collection = MongoDB04AuthPoolUtil.getCollection("test", "test_user");
         collection.updateOne(Filters.eq("name","卫何民1"),new Document("$push",new Document("hobbys","打游戏")));
     }
     
     /**
      * @Description: 06更新文档中的json
      * @author syc
      * @date: 2022年5月25日 上午11:11:51
      */
      public void updateDocumentJSON(){
          MongoCollection<Document> collection = MongoDB04AuthPoolUtil.getCollection("test", "test_user");
          collection.updateOne(Filters.eq("name","关平"),new Document("$set", new Document("secrets.money",12)));
      }



}
